﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using SERIX.Util;
using System.Data.OracleClient;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using SERIX.Classes;
using System.Collections.Generic;
using SERIX.Controles.Report;

namespace SERIX.Report
{
    public partial class ReportBeneficiario : Seguranca
    {
        String Relatorio;
        System.Data.DataSet ds = new System.Data.DataSet();
        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            if (!Page.IsPostBack)
            {
                int anoLiberado = CPlanejamento.AnoProgramacaoCorrente(this.usuAut.Login);
                int ano = DateTime.Now.Year;
                for (int i = ano - 4; i <= ano + 2; i++)
                {
                    string valor = i.ToString();
                    ddlAno.Items.Add(new ListItem(valor, valor, true));
                }
                ddlAno.SelectedValue = anoLiberado.ToString();
                Session.Add("ano", ddlAno.SelectedValue);
            }
            
        }

        protected void btnGerar_Click(object sender, EventArgs e)
        {          
            PreencherPlanejamento();  
            Response.Redirect(Report.ImprimirRelatorio(ddlFormato.SelectedValue.ToString(),ds,Relatorio.ToString(),true));
        }

       

        void PreencherPlanejamento()
        {
            ds.ReadXmlSchema(Server.MapPath("/Report/DataSet/Planejamento.xsd"));
            OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            OracleDataAdapter dt1;
            Relatorio = "~/Report/Planejamento.rpt";

            try
            {
                conn.Open();

                string Beneficiario = @"select ai.ano_ais, 
                                                p.nom_prog, 
                                                ap.dsc_acao, 
                                                i.dsc_ind, 
                                                (select tm.dsc_tpo_med from srx_tipos_medidas tm
                                                join srx_medidas_indicadores mi on (mi.idt_tpo_med = tm.idt_tpo_med)
                                                where mi.idt_ind = i.idt_ind and mi.ordem_mir = 1) as medida_1,
                                                (select tm.dsc_tpo_med from srx_tipos_medidas tm
                                                join srx_medidas_indicadores mi on (mi.idt_tpo_med = tm.idt_tpo_med)
                                                where mi.idt_ind = i.idt_ind and mi.ordem_mir = 2) as medida_2,
                                                (select tm.dsc_tpo_med from srx_tipos_medidas tm
                                                join srx_medidas_indicadores mi on (mi.idt_tpo_med = tm.idt_tpo_med)
                                                where mi.idt_ind = i.idt_ind and mi.ordem_mir = 3) as medida_3 
                                                from srx_acoes_indicadores ai
                                                join srx_acoes_programas ap on (ai.idt_acao = ap.idt_acao)
                                                join srx_indicadores i on (ai.idt_ind = i.idt_ind)
                                                join srx_programas p on (ai.idt_prog = p.idt_prog)
                                                where ai.ano_ais = " + ddlAno.SelectedItem.Text;
                /*:.....Filtros.....*/
                #region Ações
                try
                {
                    var Lista = (List<int>)Session["List_acoes"];
                    if (Lista.Count > 0)
                        {                            
                            Beneficiario += " and (";
                            for (int i = 0; i < Lista.Count; i++)
                            {
                                Beneficiario += " ap.idt_acao = " + Lista[i].ToString();
                                if (!(i == Lista.Count - 1))
                                {
                                    Beneficiario += " or";
                                }
                            }
                            Beneficiario += ")";
                        }
                }
                catch
                {

                }
                #endregion
                #region Indicadores
                try
                {
                    var Lista = (List<int>)Session["List_indicadores"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " i.idt_ind = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                #region Programas
                try
                {
                    var Lista = (List<int>)Session["List_programas"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " p.idt_prog = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                /*:.....Filtros.....*/

                
                dt1 = new OracleDataAdapter(Beneficiario, conn);
                dt1.Fill(ds, "Planejamento");
                conn.Close();
            }
            catch (Exception e)
            {

            }
        }

        protected void ddlAno_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["ano"] = ddlAno.SelectedValue;
            List<int> Programas = new List<int>();
            Session["List_programas"] = Programas;
            GridProgramas.DataBind();
            ControleAcoes.DataBind();
            GridAcoes.DataBind();
        }         
    }
}
